
<script>
    /**
   * 更新任务功能
   * @param {Object} taskData - 任务数据
   * @param {Object} table - layui表格对象
   * @param {Object} form - layui表单对象
   * @param {Object} layer - layui弹窗对象
   * @param {Object} laydate - layui日期对象
   * @param {Object} $ - jQuery对象
   */
    function updateTaskFunc(taskData, table, form, layer, laydate, $) {
        // 保存原始数据，用于比较哪些字段被修改
        var originalData = JSON.parse(JSON.stringify(taskData));

        // 创建表单HTML
        var formHtml = `
        <form class="layui-form" style="padding: 20px;" lay-filter="updateTaskForm">
            <div class="layui-form-item">
                <label class="layui-form-label">任务名称</label>
                <div class="layui-input-block">
                    <input type="text" name="name" value="${taskData.name}" lay-verify="required" placeholder="请输入任务名称" autocomplete="off" class="layui-input">
                </div>
            </div>
            <div class="layui-form-item">
                <label class="layui-form-label">任务描述</label>
                <div class="layui-input-block">
                    <textarea name="description" placeholder="请输入任务描述" class="layui-textarea">${taskData.description}</textarea>
                </div>
            </div>
            
            <!-- 任务结果确认: 单选框组件 -->
            <div class="layui-form-item">
                <label class="layui-form-label">任务结果确认</label>
                <div class="layui-input-block">
                    <div class="layui-form-radio" style="margin-right: 30px;">
                        <input type="radio" name="status" value="2" title="进行中" ${taskData.status === 2 ? 'checked' : ''} lay-filter="taskResultRadio">
                    </div>
                    <div class="layui-form-radio" style="margin-right: 30px;">
                        <input type="radio" name="status" value="3" title="已完成" ${taskData.status === 3 ? 'checked' : ''} lay-filter="taskResultRadio">
                    </div>
                    <div class="layui-form-radio">
                        <input type="radio" name="status" value="4" title="已取消" ${taskData.status === 4 ? 'checked' : ''} lay-filter="taskResultRadio">
                    </div>
                </div>
            </div>
            
            <!-- 状态显示元素 -->
            <div class="layui-form-item">
                <label class="layui-form-label">当前确认状态</label>
                <div class="layui-input-block">
                    <div id="currentStatusDisplay" class="layui-btn layui-btn-disabled">
                        ${getStatusText(taskData.status)}
                    </div>
                </div>
            </div>
            
            <div class="layui-form-item">
                <label class="layui-form-label">任务积分</label>
                <div class="layui-input-block">
                    <input type="number" name="points" value="${taskData.points}" placeholder="请输入任务积分" autocomplete="off" class="layui-input">
                </div>
            </div>
            <div class="layui-form-item">
                <label class="layui-form-label">开始时间</label>
                <div class="layui-input-block">
                    <input type="text" id="updateStartTime" name="start_time" value="${taskData.start_time}" placeholder="请选择开始时间" class="layui-input">
                </div>
            </div>
            <div class="layui-form-item">
                <label class="layui-form-label">结束时间</label>
                <div class="layui-input-block">
                    <input type="text" id="updateEndTime" name="end_time" value="${taskData.end_time}" placeholder="请选择结束时间" class="layui-input">
                </div>
            </div>
            <div class="layui-form-item layui-form-text">
                <div class="layui-input-block">
                    <button class="layui-btn" lay-submit lay-filter="updateTaskSubmit">提交更新</button>
                    <button type="button" class="layui-btn layui-btn-primary" onclick="layer.closeAll()">取消</button>
                </div>
            </div>
        </form>
        `;

        // 弹出表单
        var index = layer.open({
            type: 1,
            title: '更新任务',
            content: formHtml,
            area: ['600px', '500px'],
            success: function (layero, index) {
                // 渲染表单
                form.render();

                // 初始化日期时间选择器
                laydate.render({
                    elem: '#updateStartTime',
                    type: 'datetime',
                    format: 'yyyy-MM-dd HH:mm:ss'
                });

                laydate.render({
                    elem: '#updateEndTime',
                    type: 'datetime',
                    format: 'yyyy-MM-dd HH:mm:ss',
                    min: function (value) {
                        return $('#updateStartTime').val();
                    }
                });
                
                // 初始化状态显示样式
                initStatusDisplay(taskData.status);
            }
        });

        // 监听单选框变化
        form.on('radio(taskResultRadio)', function(data) {
            // 更新状态显示
            updateStatusDisplay(data.value);
        });

        // 监听表单提交
        form.on('submit(updateTaskSubmit)', function (data) {
            var formData = data.field;

            // 创建更新数据对象，只包含被修改的字段
            var updateData = {
                tid: taskData.tid,
                uid: userInfo.uid
            };

            // 比较字段是否被修改
            Object.keys(formData).forEach(function (field) {
                var formValue = formData[field];
                var originalValue = originalData[field];

                // 处理日期类型的特殊比较
                if (field === 'start_time' || field === 'end_time') {
                    // 确保比较的值都是字符串类型
                    formValue = String(formValue);
                    originalValue = String(originalValue);
                }

                // 如果值不相等且新值不为空，则加入更新数据
                if (formValue !== originalValue && formValue !== '') {
                    updateData[field] = formValue;
                }
            });

            console.log('要更新的字段:', updateData);

            // 调用更新任务API
            axios({
                url: '/api/task/update_task/',
                method: 'POST',
                data: updateData,
            }).then(function (res) {
                res = res.data;
                console.log('更新任务API返回结果:', res);
                if (res.code === 0) {
                    layer.msg('任务更新成功', { icon: 6 });
                    layer.close(index);
                    // 刷新表格
                    table.reload('Index-ID-table-demo-page');
                } else {
                    layer.msg(res.message || '任务更新失败', { icon: 5 });
                }
            }).catch(function (error) {
                console.error('更新任务API请求失败:', error);
                layer.msg('网络错误，请稍后重试', { icon: 5 });
            });

            return false;
        });
        
        // 获取状态文本
        function getStatusText(status) {
            var statusMap = {
                1: '未开始',
                2: '进行中',
                3: '已完成',
                4: '已取消'
            };
            return statusMap[status] || '未知状态';
        }
        
        // 初始化状态显示
        function initStatusDisplay(status) {
            updateStatusDisplay(status.toString());
        }
        
        // 更新状态显示函数
        function updateStatusDisplay(statusValue) {
            var statusText = getStatusText(parseInt(statusValue));
            var statusClass = 'layui-btn-disabled';
            
            if (statusValue === '3') {
                statusClass = 'layui-btn-success';
            } else if (statusValue === '4') {
                statusClass = 'layui-btn-danger';
            } else if (statusValue === '2') {
                statusClass = 'layui-btn-primary';
            }
            
            $('#currentStatusDisplay')
                .text(statusText)
                .removeClass('layui-btn-disabled layui-btn-success layui-btn-danger layui-btn-primary')
                .addClass(statusClass);
        }
    }
</script>